export function useContractForm(options: any = {}) {
    const { back } = useRouter()

    const formRef = ref()

    const fileType = '.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.wps,.jpg,.jpeg,.png'

    const defaultState = {
        agreementCode: '', // 协议编码
        agreementName: '', // 协议名称
        agreementType: '', // 协议类型：1 为私有协议，2 为总价合同
        contractFileList: [], // 合同文件列表
        endDate: '', //	协议有效期结束日期
        otherFileList: [], // 合同附件列表
        partyA: '', // 甲方
        partyAId: '', // 甲方id
        partyB: '', // 乙方
        partyBId: '', // 乙方id
        productList: [], // 商品列表
        relationAgreementId: '', // 关联的协议id
        relationAgreementName: '', // 关联的协议名称
        startDate: '', // 协议有效期起始日期
        status: 0,
        initiationTime: [], // 有效期
        priceType: 1, // 1金额 2其他
        contractPrice: 0, // 项目合同价格
    }

    // 初始状态可被覆盖
    const state = ref({ ...defaultState, ...options.initialState })

    // 默认验证规则
    const defaultRules = {
        partyBId: [
            {
                required: true,
                message: '请选择乙方',
            },
        ],
        relationAgreementId: [
            {
                required: true,
                message: '请选择协议',
            },
        ],
        agreementName: [
            {
                required: true,
                message: '请输入合同名称',
            },
        ],
        initiationTime: [
            {
                required: true,
                message: '请选择合同有效期',
            },
        ],
        priceType: [
            {
                required: true,
                message: '请输入合同金额',
            },
        ],
        contractFileList: [
            {
                required: true,
                message: '请上传合同',
            },
        ],
        contractPrice: [
            {
                required: true,
                message: '请输入金额',
            },
        ],
    }

    const rules = { ...defaultRules, ...options.rules }

    return {
        formRef,
        state,
        rules,
        fileType,
        back,
    }
}
